package wwl.lsf;

import com.alibaba.fastjson.JSONObject;

import java.util.regex.Pattern;

/**
 * @Title
 * @Author wangwenliang
 * @Date 2021/5/10
 * @Description
 */
public class 正则表达式匹配 {

    private static final Pattern NAME_SEPARATOR = Pattern.compile("\\s*[,]+\\s*");

    public static void main(String[] args) {

        String[] split = NAME_SEPARATOR.split("we,,fsf\n  ,  , , 是的");
        System.out.println("split = " + JSONObject.toJSONString(split));

        //        System.out.println(isMatch("abbbc", "ab*c"));

    }

    public static boolean isMatch(String s, String p) {
        int m = s.length();
        int n = p.length();
        boolean f[][] = new boolean[m + 1][n + 1];
        f[0][0] = true;//f[0][0]代表s和p均为空字符串，f[1][1]代表s和p的第一个字符（即在s和p中下标为0的字符）
        for (int i = 0; i <= m; ++i) {
            for (int j = 1; j <= n; ++j) {
                if (p.charAt(j - 1) == '*') {//p的第j个字符为*
                    if (matches(s, p, i, j - 1)) {//匹配s的第i个字符和p的第j-1个字符
                        f[i][j] = f[i - 1][j] || f[i][j - 2];//p中*前面的字符在s中出现多次或者在s中只出现1次
                    } else {
                        f[i][j] = f[i][j - 2];//p中*前面的在s中字符出现0次
                    }
                } else {//p的第j个字符不为*
                    if (matches(s, p, i, j)) {//匹配s的第i个字符和p的第j个字符
                        f[i][j] = f[i - 1][j - 1];//匹配成功，状态转移；匹配不成功，默认是false
                    }
                }
            }
        }
        return f[m][n];
    }

    public static boolean matches(String s, String p, int i, int j) {
        if (i == 0) {
            return false;
        }
        if (p.charAt(j - 1) == '.') {
            return true;
        }
        return s.charAt(i - 1) == p.charAt(j - 1);
    }
}



